1. Field of the Invention
The present invention relates to a method for developing a computer program for business and its composing system (or, authoring tool), and more particularly to a software production automating method and its composing system based on process knowledge and user interface, which allow a user, not a programming expert but a person understanding actual business logic and flow, to develop a desired computer program in a rapid and efficient way.
2. Description of the Related Art
For development of a computer program, namely software, a standardized development methodology began after the nineteen seventies when the ‘structured development methodology” based on Waterfall Model paradigm was systematically established.
This structured development methodology systemizes a stepwise implantation stage having a sequence of analysis-design-implementation-test-maintenance, and it allows complicated and difficult concept and procedures to be easily grasped and managed by using symbol-based design techniques and development tools specialized to every development stage. In addition, it was emphasized that a logical part and a physical part in software development should be separated and also a logical design should be ahead of a physical design. By separating the software development into two parts as mentioned above, a draft of logical system design is proposed to users for preliminary examination before the system is actually implemented.
Meanwhile, the structured development methodology systemizes the software development method, but it reaches a limit as software got complicated and users demanded a higher level after the nineteen eighties. In particular, the software development was in several unit module or small size system in the past, but the conventional structured development methodology could not cope with the changing environments since there was a demand for an information system from enterprises and also a large project considering strategic aspect of enterprises.
According to the above demands, C. Finkelstein proposed the term “Information Engineering” in 1981, and J. Martin materialized this conception into an information engineering methodology and widely propagated it. Here, the information engineering is defined as ‘application of standardized methods required for planning, analysis, design and construction of an information system that is needed in enterprises or a part of the enterprise’.
The above information engineering development methodology has an enterprise-oriented aspect, so system data and automating procedures are modeled on the focus of information and work procedures of enterprises. In addition, flexible progress and integration among stages linked in the order of planning-analysis-design-construction were pursued, and it was intended to make the methodology and the case tool sufficiently complement each other. Thus, various common methodologies based on the information engineering introduce or develop by itself a case tool suitable for their own methodologies, so the methodology and the case tool are supplied together.
A common methodology based on the above information engineering development methodology basically follows the below procedure. That is to say, the methodology is composed of an analysis process for grasping user demands and schematizing them→a process of designing a database structure required for operating program on the basis of the model made in the analysis process→a process of designing a screen layout suitable for the user demands and the database structure→a process of executing an actual coding work to implement an execution program→a process of integrating partially-implemented programs and a system in an upward manner→a test process for testing detailed functions of each program and functions of an integrated program→an application process for moving a tested system to a real operation environment and conducting post maintenance.
The above information engineering development methodology is massively designed to be capable of supporting a large project for constructing an information system of an enterprise on the basis of logical organization of the structured development methodology, and also it has practicality by giving a case tool optimized for each stage. In addition, it was reinforced in the aspect of project management, so the information engineering development methodology cast anchor as a representative methodology in terms of software development and information system construction in 1980's and 1990's.
However, the feature of the information engineering development methodology that pursues systematic and thorough management requires too much time and cost. In addition, it is still based on the paradigm of the structured development methodology, so it has many problems in flexibility of system development. Thus, as alternatives, concepts of an object-oriented methodology and a CBD methodology appeared and have been vigorously studied, but it is not considered that such concepts are sufficiently practiced up to now.
Most of the information engineering methodology systems and their development systems currently used for development of computer program and software for business still have the following problems.
First, an existing software development methodology characterized in complex procedure and massive task has a low level of practicality and difficulty in development systemization.
That is to say, the existing development methodologies are composed of very complex procedures, and a massive output is required. In fact, in case of ‘METHOD/1 (Client-Server Development Model ver. 9.5)’ developed in Anderson Consulting, it is composed of 2 phases, 16 segments and 61 tasks in total, and enormous kinds of outputs are demanded. In addition, considering that an output prepared in a specific task is referred to and corrected in other tasks, it should be understood that a workload is more than that simply estimated using the number of outputs.
The existing development methodology is configured using complex procedures and enormous size due to the reason that it takes a method of constructing a system with considering data structure, process and user interface together from the initial analysis stage. However, in this method, the development method itself demands a developer to have solid sight and access method. In addition, the existing methodologies consider technical environments for constructing a system as well as a software region such as data and process. Under the above promise, though an actually excellent methodology appears to perfectly suggest a solid access method and clearly define output and guide required for each stage, it already becomes so complicated to lose its practical economical efficiency.
Second, there are structural inefficiency and unreality caused by considering the database structure most preferentially from the analysis and design process.
That is to say, the database-related portion is worst in flexibility during the software development procedure and most hardly corrected when any problem or an added item is generated. If any change occurs in the database structure, a lot of related modules are affected, causing serious increase of the number of processes. Thus, from a commonsense standpoint, it is natural that such an inflexible work is conducted in the latter part of the whole development processes.
However, in the existing development methodology, the database-related portion is positioned in a relatively front position in view of the whole development processes, and essential functions executed by software is basically premised to be focused on data process, not on automation of business and work functions. Thus, the data modeling work is conducted together with process analysis from the early stage of the methodology and even the design stage is conducted on the focus of final specifications and design of a database structure up to a physical dimension. That is to say, data structure is already settled before beginning a regular implementation work such as program source coding.
The above method has been considered to be too fair up to now, but this method in fact has two serious structural problems.
First, considering a data structure from the analysis process becomes a significant limit in fundamentally improving and innovating business processes. When the information engineering firstly appeared, the development of information system was essentially directed to analyzing events occurring at work sites and correcting inefficient parts so as to replace human works with information technology. Thus, there was needed to transfer current processes and data structure to developers so that the developers might easily understand them, and various modeling techniques were for such works. In the past, the principle object of the development methodology was to model the actual as it was, but these days, innovating a current system, organization or process is an essential issue.
That is to say, in order to drive true process innovation and BPR, the most important demand of users is to research and develop more reasonable process by utilizing an innovative means, namely IT, beyond the business procedure and habitual practices of the existing systems or work places. In this point of view, it would be considered as an almost impossible precondition in accomplishing a fundamental object to evaluate efficiency and possibility of improvement of business processes together with considering a data structure corresponding to a current structure from the designing stage.
The method that considers a data structure from a too front stage has another structural problem that significant time and endeavor are required for changing a database structure once settled, and accordingly too much endeavor is required for test and verification from the design stage. As mentioned above, the parts related to a data structure are lack of flexibility, so it is difficult to correct them if they are once settled. Thus, in order to make one simple correction for the database structure due to any problem or requirement occurring in a process or data structure after conducting an actual implementation stage, there arises a problem that screen and output structures of the corresponding module and its source code should be all corrected, and also preceding or succeeding modules operating in relation to the above module and other modules making superior or subordinate functions should be all corrected. Since even a simple correction is very difficult, much cost and endeavor are required for reliable test and verification when each stage is progressed. In spite of that, an application software reflecting a complex industrial work place cannot help undergoing such trial and error.
Third, since roles of business process designer and professional developer are clearly classified, there are needed much time and cost for communication between them, it is not easy to reflect knowledge of the business process expert on the software.
That is to say, in the existing development methodology, a role of a developer having a computer technique is clearly separated from a role of users who understand work logic. It is a natural result since developer and user have different knowledge and different point of views on system.
In the aspect of knowledge, the developer does not exactly know the business logic, and the user does not have development capability or knowledge for constructing a system. In addition, in the aspect of system, two subjects have great difference. In the development of software, a user has a standpoint ‘what’ the system will give, but a developer has a standpoint ‘how’ the system is implemented.
Thus, developers should confer with users or related professionals sufficiently about what for and how to make a program, and thus so complex examination, confirmation and test procedures are inevitably included in the process of analysis-design-development.
Due to such features, communication is an essential factor in the analysis-design stages, and communication is most lively made in those stages. In fact, communication between developers and users is considered to be very important in the software development project but not easily conducted in a successful way.
In addition, since two independent subjects take two essential work parts in software development, namely understanding for business process and development technique, many problems are caused in following stages. Thus, the software development is essentially a very difficult work, and the development methodology becomes complicated.
In order to narrow the gap between developers and users and enhance efficiency of communication, various tools and techniques have been researched and developed. Tools for supporting analysis and modeling such as DFD (Data Flow Diagram), ERD (Entity Relationship Diagram) and UML (United Modeling Language) make complex phenomenon be abstracted for better understanding, and also help to minimize discord of communication between developers and users.
In addition, it is also one of useful methods that a prototype is used for looking into requirements of users and allowing developers to understand the requirements. However, the prototype experiences many changes while it is made into a finished product, and it may awkwardly arise many misunderstanding to users about a finished product, and interchange or integration with other program or system is not easily obtained.
As a result, in view of a user who will use software, it will be most ideal that a business process designer who essentially understands business process conducts all processes from design to concrete implementation. However, in the existing development method and system, even detailed functions for controlling hardware and operating system should be developed as source codes. In addition, in the component-based development methodology designed for maximizing software development productivity through reusability, the works for combining each component and linking it to user interface should be conducted by expert developers. Thus, it has been substantially impossible to expand a role of a business process designer as mentioned above.